package com.init.bootframe.business.service.impl;

import com.init.bootframe.business.dao.IContactDao;
import com.init.bootframe.business.dao.IEventDao;
import com.init.bootframe.business.dao.IHonorDao;
import com.init.bootframe.business.vo.ContactVO;
import com.init.bootframe.business.service.IContactService;
import com.init.bootframe.business.vo.EventVO;
import com.init.bootframe.business.vo.HonorVO;
import net.sf.json.JSONObject;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

@Service
public class ContactServiceImpl implements IContactService {

    private Logger logger = LoggerFactory.getLogger(ContactServiceImpl.class); //日志

    @Autowired
    private IContactDao contactDao; //公司信息dao

    @Autowired
    private IHonorDao honorDao; //公司荣誉信息dao

    @Autowired
    private IEventDao eventDao; //公司事件信息dao


    /******************************************************************** 公司联系信息模块 *************************************************************/

    /**
     * 修改联系信息
     *
     * @param contactVO
     * @return
     */
    @Override
    public Map<String, Object> updateContact(ContactVO contactVO) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            if (""!= contactVO.getCompanyId() && contactVO.getCompanyId() != null) {
                contactDao.updateContact(contactVO);// 修改
            } else {
                contactDao.addContact(contactVO);// 新增
            }
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "保存联系信息成功！");
            logger.info("保存联系信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "保存联系信息失败！");
            logger.info("修改联系信息失败！");
        }
        return resultMap;
    }

    /**
     * 查询联系信息
     *
     * @param
     * @return
     */
    @Override
    public List<ContactVO> findContact() {
        List<ContactVO> data = contactDao.findContact();
        if (!data.isEmpty()) {
            logger.debug("查询公司信息不为空！");
            return data;
        } else {
            logger.debug("查询公司信息为空！");
            return data;
        }
    }

    /******************************************************************** 公司荣誉模块 *************************************************************/

    /**
     * 分页查询公司荣誉
     * @param honorVO
     * @return
     */
    @Override
    public JSONObject findHonorList(HonorVO honorVO) {
        JSONObject jsonObject = new JSONObject();
        // 查询集合数据总数
        int total = honorDao.findHonorListCount(honorVO);
        // 查询集合数据
        List<HonorVO> productList = new ArrayList<>();
        if (total > 0) {
            productList = honorDao.findHonorList(honorVO);
        }
        jsonObject.put("rows", productList);
        jsonObject.put("total", total);
        return jsonObject;
    }

    /**
     * list 查询
     * @return
     */
    @Override
    public List<HonorVO> findHonorList() {
        HonorVO honorVO = new HonorVO();
        return honorDao.findHonorList(honorVO);
    }
    /**
     * 添加公司荣誉
     * @param honorVO
     * @return
     */
    @Override
    public Map<String, Object> addHonor(HonorVO honorVO) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            honorDao.addHonor(honorVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "添加信息成功！");
            logger.info("添加公司荣誉信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "添加信息失败！");
            logger.info("添加公司荣誉信息失败！" + e.getMessage());
            throw new RuntimeException(e.getMessage());
        }
        return resultMap;
    }

    /**
     * 删除公司荣誉
     * @param honorVO
     * @return
     */
    @Override
    public Map<String, Object> deleteHonor(HonorVO honorVO) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            honorDao.deleteHonor(honorVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "删除信息成功！");
            logger.info("删除公司荣誉信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "删除信息失败！");
            logger.info("删除公司荣誉信息失败！" + e.getMessage());
            throw new RuntimeException(e.getMessage());
        }
        return resultMap;
    }

    /******************************************************************** 公司事件模块 *************************************************************/

    /**
     * 分页查询公司事件
     * @param eventVO
     * @return
     */
    @Override
    public JSONObject findEventList(EventVO eventVO) {
        JSONObject jsonObject = new JSONObject();
        // 查询集合数据总数
        int total = eventDao.findEventListCount(eventVO);
        // 查询集合数据
        List<EventVO> productList = new ArrayList<>();
        if (total > 0) {
            productList = eventDao.findEventList(eventVO);
        }
        jsonObject.put("rows", productList);
        jsonObject.put("total", total);
        return jsonObject;
    }

    /**
     * list 查询
     * @return
     */
    public List<EventVO> findEventList() {
        EventVO eventVO = new EventVO();
        return eventDao.findEventList(eventVO);
    }
    /**
     * 添加公司事件
     * @param eventVO
     * @return
     */
    @Override
    public Map<String, Object> addEvent(EventVO eventVO) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            eventDao.addEvent(eventVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "添加信息成功！");
            logger.info("添加公司事件信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "添加信息失败！");
            logger.info("添加公司事件信息失败！" + e.getMessage());
            throw new RuntimeException(e.getMessage());
        }
        return resultMap;
    }

    /**
     * 删除公司事件
     * @param eventVO
     * @return
     */
    @Override
    public Map<String, Object> deleteEvent(EventVO eventVO) {
        Map<String, Object> resultMap = new HashMap<>();
        try {
            eventDao.deleteEvent(eventVO);
            resultMap.put("result", Boolean.TRUE);
            resultMap.put("msg", "删除信息成功！");
            logger.info("删除公司事件信息成功！");
        } catch (Exception e) {
            resultMap.put("result", Boolean.FALSE);
            resultMap.put("msg", "删除信息失败！");
            logger.info("删除公司事件信息失败！" + e.getMessage());
            throw new RuntimeException(e.getMessage());
        }
        return resultMap;
    }

}
